package com.dp.factory;

import com.dp.factory.service.Car;
import com.dp.factory.service.impl.Ford;
import com.dp.factory.service.impl.Mzd;

/**
 * <p>program: dp.learn.master</p>
 * <p>Description: 简单工厂模式</p>
 * <p>Copyright: Copyright (c) 2020</p>
 * <p>Company: wylCloud.com</p>
 *
 * @author wyl (764198025@qq.com)
 * @version 1.0
 * @date Create in 2020/6/30
 */
public class SimpleCarFactory {

    /***
     * 优点: 帮助封装 客户端可以更好的面向接口编程,解耦。客户端不需要知道实现类。
     * 缺点: 需要理解参数的意义，增加复杂度。不方便扩展子类。
     *
     * 简单工厂模式也叫静态工厂模式，就是工厂类一般是使用静态方法，
     * 通过接收的参数的不同来返回不同的对象实例。对于增加新产品(新功能)必须要修改源程序！
     *
     * 不推荐使用 违背开闭原则
     */

    public static final String MZD = "mzd";

    public static final String FORD = "ford";

    /***
     * 生产车的工厂类
     * @param type 车型
     * @return
     */
    public static Car creatCar(String type) {
        if (MZD.equals(type)) {
            return new Mzd();
        } else if (FORD.equals(type)) {
            return new Ford();
        } else {
            return null;
        }
    }
}
